/**
 * URL处理工具函数
 */

// 从环境变量获取基础URL，如果没有则从 VUE_APP_BASE_API 中提取域名
function getBaseUrl() {
  // 优先使用 VUE_APP_BASE_URL（如果存在）
  if (process.env.VUE_APP_BASE_URL) {
    return process.env.VUE_APP_BASE_URL.replace(/\/$/, '') // 移除末尾的斜杠
  }
  
  // 从 VUE_APP_BASE_API 中提取域名（去掉 /api 等路径）
  if (process.env.VUE_APP_BASE_API) {
    const baseApi = process.env.VUE_APP_BASE_API
    if (baseApi.startsWith('http://') || baseApi.startsWith('https://')) {
      // 提取域名部分（去掉 /api 等路径）
      return baseApi.replace(/\/api.*$/, '').replace(/\/$/, '')
    }
  }
  
  // 如果环境变量都没有配置，返回空字符串
  return ''
}

const BASE_URL = getBaseUrl()

/**
 * 获取完整的文件URL
 * @param {string} path - 文件路径
 * @returns {string} 完整URL
 */
export function getFullUrl(path) {
  if (!path) return ''
  if (path.startsWith('http://') || path.startsWith('https://')) {
    return path
  }
  // 如果 BASE_URL 为空，直接返回路径（可能是相对路径）
  if (!BASE_URL) {
    return path
  }
  return BASE_URL + (path.startsWith('/') ? path : '/' + path)
}

/**
 * 获取完整的头像URL
 * @param {string} avatarPath - 头像路径
 * @returns {string} 完整URL或默认头像
 */
export function getAvatarUrl(avatarPath) {
  if (!avatarPath) {
    return 'https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png'
  }
  return getFullUrl(avatarPath)
}

/**
 * 解析文件URL(处理JSON字符串格式)
 * @param {string|array} fileUrl - 文件URL字段
 * @returns {array} URL数组
 */
export function parseFileUrls(fileUrl) {
  if (!fileUrl) return []
  
  // 如果已经是数组,直接返回
  if (Array.isArray(fileUrl)) {
    return fileUrl.map(url => getFullUrl(url))
  }
  
  // 如果是字符串,尝试解析JSON
  if (typeof fileUrl === 'string') {
    try {
      const parsed = JSON.parse(fileUrl)
      if (Array.isArray(parsed)) {
        return parsed.map(url => getFullUrl(url))
      }
      // 处理嵌套JSON格式
      if (parsed.file_urls) {
        return parseFileUrls(parsed.file_urls)
      }
      if (parsed.file_urls_json) {
        return parseFileUrls(parsed.file_urls_json)
      }
    } catch (e) {
      // 如果解析失败,可能是单个URL
      return [getFullUrl(fileUrl)]
    }
  }
  
  return []
}

/**
 * 格式化进度字符串为数字
 * @param {string} progressStr - 进度字符串 "75%"
 * @returns {number} 进度数字 75
 */
export function parseProgress(progressStr) {
  if (!progressStr) return 0
  if (typeof progressStr === 'number') return progressStr
  return parseInt(String(progressStr).replace('%', '')) || 0
}

/**
 * 格式化时间
 * @param {string} datetime - 时间字符串
 * @returns {string} 格式化后的时间
 */
export function formatDateTime(datetime) {
  if (!datetime) return '-'
  const date = new Date(datetime)
  return date.toLocaleString('zh-CN', {
    year: 'numeric',
    month: '2-digit',
    day: '2-digit',
    hour: '2-digit',
    minute: '2-digit'
  })
}

/**
 * 格式化日期为 Y-m-d 格式
 * @param {string} datetime - 时间字符串
 * @returns {string} 格式化后的日期 (如: 2024-01-09)
 */
export function formatDate(datetime) {
  if (!datetime) return '-'
  const date = new Date(datetime)
  const year = date.getFullYear()
  const month = String(date.getMonth() + 1).padStart(2, '0')
  const day = String(date.getDate()).padStart(2, '0')
  return `${year}-${month}-${day}`
}
